package com.carsa.blackberry.util;

import java.util.Enumeration;
import java.util.Vector;

/**
 * @author Nahuel Barrios.
 * @since 30/07/2010.
 * @version 1.0
 */
public class XMLElement implements XMLPortable {

    private String _name;
    private Vector _attributes = new Vector(); ;
    // private XMLElement[] _xmlValues;
    private Vector _value      = new Vector();

    /**
     * Crea un nuevo elemento XML del tipo: <nombre>valor</nombre>
     * 
     * @param name
     *            Un {@link String} con el nombre del elemento XML
     * @param value
     *            Un {@link String} con el valor del elemento XML
     */
    public XMLElement(String name, String value) {
	super();
	_name = name;
	_value.addElement(value);
    }

    /**
     * @param attributeName
     * @param attributeValue
     */
    // TODO : Functionality : Terminar XMLElement.addAttribute() javadoc
    public void addAttribute(String attributeName, String attributeValue) {
	_attributes.addElement(XMLHandler.makeAttributeWith(attributeName, attributeValue));
    }

    public String toString() {
	return this.toXMLString();
    }

    public void initializeFromXML(String xmlSource) {
	// TODO : Functionality : Terminar el initializeFromXML en XMLElement
    }

    public String toXMLString() {
	String[] anArray = null;

	if (!_attributes.isEmpty()) {
	    anArray = new String[_attributes.size()];
	    _attributes.copyInto(anArray);
	}

	XMLHandler handler = new XMLHandler(_name, anArray, null);

	Enumeration elements = _value.elements();
	while (elements.hasMoreElements()) {
	    handler.addElementAtRoot((String) elements.nextElement());
	}

	return handler.toString();
    }

    // /**
    // * Crea un nuevo elemento XML sin ningun valor.
    // * @param name
    // */
    // public XMLElement(String name) {
    // super();
    // _name = name;
    // }
    // public XMLElement(String name, XMLElement[] value) {
    // super();
    // _name = name;
    // _xmlValues= value;
    //		
    // for(int idx= 0; idx<value.length; idx++)
    // _value.addElement(value[idx].toString());
    // }

}
